/**
 * 三.MVEL表达式解析器
 *
 * 1. 简介
 * MVEL在很大程度上受到Java语法的启发，作为一个表达式语言，也有一些根本
 * 的区别，旨在更高的效率，例如：直接支持集合、数组和字符串匹配等操作以
 * 及正则表达式。 MVEL用于执行使用Java语法编写的表达式。
 *
 * 2. 特性
 *
 * MVEL是一个功能强大的基于Java应用程序的表达式语言。
 * 目前最新的版本是2.0，具有以下特性：
 * (1). 动态JIT优化器。当负载超过一个确保代码产生的阈值时，选择性地产生字
 * 节代码,这大大减少了内存的使用量。新的静态类型检查和属性支持，允许集成
 * 类型安全表达。
 * (2). 错误报告的改善。包括行和列的错误信息。
 * (3). 新的脚本语言特征。MVEL2.0 包含函数定义，如：闭包，lambda定义，
 * 标准循环构造(for, while, do-while, do-until…)，空值安全导航操作，内联with
 * -context运营 ，易变的（isdef）的测试运营等等。
 * (4). 改进的集成功能。迎合主流的需求，MVEL2.0支持基础类型的个性化属性处理器，集成到JIT中。
 * (5). 更快的模板引擎，支持线性模板定义，宏定义和个性化标记定义。
 * (6). 新的交互式shell（MVELSH）。
 *
 * (7). 缺少可选类型安全
 * (8). 集成不良，通常通过映射填入内容。没有字节码不能运作用字节码生成编
 * 译时间慢，还增加了可扩展性问题；不用字节码生成运行时执行非常慢
 * (9). 内存消耗过大
 * (10). Jar巨大/依赖规模
 *
 * 3. 原理
 * 与java不同，MVEL是动态类型（带有可选分类），也就是说在源文件中是没有
 * 类型限制的。一条MVEL表达式，简单的可以是单个标识符，复杂的则可能是
 * 一个充满了方法调用和内部集合创建的庞大的布尔表达式。
 */
package com.leelovejava.drools.rules.mvel;